/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function FindPath(root, expectNumber)
{
    // write code here
    var res = [] // 定义遍历符合条件的路径结果
    var path = [] // 定义路径
    function findPath(root,target){ // 定义寻找路径的函数 传参 根节点 一集sum
      if(root === null) return
      path.push(root.val) // 将根节点的值添加到路径数组中
      // 从心判断target的值
      target -= root.val
      if(target === 0 && root.left === null && root.right === null){
        // 假如这个时候target===0 并且这个节点的左右子树都是0 说明找到了这个路径 就把这个路径添加到结果中
        // res.push(path) // 这样写会把数组的地址添加到res中 因为后续还会对paht进行修改 所以也会修改这个path
        // 所以要用深拷贝
        var arr = [].concat(path)
        res.push(arr)
      }
      // 假如不是的话 就需要继续判断根节点左右节点 里面是不是有这样的路径
      findPath(root.left,target)
      findPath(root.right,target)
      // 找完之如果最后没找到就需要把这个路径返回到上一级 即弹出一个节点
      path.pop()
    }
    findPath(root,expectNumber)
    return res // 最后把结果数组返回
}
module.exports = {
    FindPath : FindPath
};